package com.indsvr.service;

import com.google.gson.Gson;
import com.indsvr.entity.xunlei.XunLeiFile;
import com.indsvr.entity.xunlei.XunLeiTask;
import com.indsvr.utils.XunleiOkHttpUtils;
import org.springframework.stereotype.Service;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

@Service
public class PathService {

    //filters:  "PHASE_TYPE_COMPLETE,PHASE_TYPE_PENDING,PHASE_TYPE_RUNNING,PHASE_TYPE_PAUSED,PHASE_TYPE_ERROR"
    public ArrayList<XunLeiTask.Task> getRecord(XunleiOkHttpUtils xunleiOkHttpUtils) throws Exception {
        String url = "/drive/v1/tasks";
        HashMap<String, String> params = new HashMap<>();
        params.put("limit", "100");
        params.put("page_token", "");
        params.put("filters", "{\"phase\":{\"in\":\"PHASE_TYPE_COMPLETE,PHASE_TYPE_PENDING,PHASE_TYPE_RUNNING,PHASE_TYPE_PAUSED,PHASE_TYPE_ERROR\"},\"type\":{\"in\":\"user#download-url,user#download\"}}");
        String execute = xunleiOkHttpUtils.execute(url, params, null);
        XunLeiTask xunLeiTask = new Gson().fromJson(execute, XunLeiTask.class);
        ArrayList<XunLeiTask.Task> tasks = xunLeiTask.getTasks();
        return tasks;
    }


    public XunLeiFile selectPath(XunleiOkHttpUtils xunleiOkHttpUtils, String id) throws Exception {
        //查询
        String url = "/drive/v1/files";
        HashMap<String, String> params = new HashMap<String, String>();
        params.put("parent_id", id);
        params.put("limit", "1000");
        params.put("filters", "{\"kind\":{\"eq\":\"drive#folder\"},\"trashed\":{\"eq\":false},\"phase\":{\"eq\":\"PHASE_TYPE_COMPLETE\"}}");
        params.put("page_token", "");
//        params.put("with", "withCategoryHistoryDownloadPath");
        params.put("with", "withCategoryDiskMountPath");
//        params.put("with", "withCategoryDownloadPath");
        String execute = xunleiOkHttpUtils.execute(url, params, null);
        XunLeiFile xunLeiPath = new Gson().fromJson(execute, XunLeiFile.class);
        if (xunLeiPath.getFiles() == null) {
            throw new RuntimeException("路径不存在");
        }
        return xunLeiPath;
    }


//    public String selectPath(XunleiOkHttpUtils xunleiOkHttpUtils, String path,String deviceId) throws Exception {
//
//        String[] split = path.split("/");
//
//        //删除/前面的空格
//        String[] paths = new String[split.length-1];
//        for (int i = 0; i < split.length; i++) {
//            if (i==0) {
//                continue;
//            }
//            paths[i-1] = split[i];
//        }
//
//
//        String parent_id = "";
//        int cnt = 0;
//
//        while (true) {
//            //空路径返回空
//            if (paths.length==cnt) {
//                return parent_id;
//            }
//
//            //查询
//            String url = "/drive/v1/files";
//            HashMap<String, String> params = new HashMap<>();
//            params.put("parent_id",parent_id);
//            params.put("limit","1000");
//            params.put("filters","{\"kind\":{\"eq\":\"drive#folder\"},\"trashed\":{\"eq\":false},\"phase\":{\"eq\":\"PHASE_TYPE_COMPLETE\"}}");
//            params.put("page_token","");
//            params.put("with","withCategoryDiskMountPath");
//            String execute = xunleiOkHttpUtils.execute(url, params, null);
//
//            XunLeiFile xunLeiPath = new Gson().fromJson(execute, XunLeiFile.class);
//
//            boolean exists = false;
//            if (xunLeiPath.getFiles()!=null&&xunLeiPath.getFiles().size()>0) {
//                for (XunLeiFile.File file : xunLeiPath.getFiles()) {
//                    if ((paths[cnt]+"/").equals(file.getName()) || (paths[cnt]).equals(file.getName())) {
//                        cnt=cnt+1;
//                        exists = true;
//                        parent_id=file.getId();
//                        break;
//                    }
//                }
//            }
//            if (exists) {
//                continue;
//            }
//            parent_id=insertPath(paths[cnt],parent_id,deviceId,xunleiOkHttpUtils).getId();
//            if (parent_id == null) {
//                return parent_id;
//            }
//            cnt=cnt+1;
//        }
//
//
//    }


    //创建子目录
    public XunLeiFile.File insertPath(String dir, String parent_id, String deviceId, XunleiOkHttpUtils okHttpUtils) throws Exception {
        String path = "/drive/v1/files";
        HashMap<String, String> stringStringHashMap = new HashMap<>();
        stringStringHashMap.put("parent_id", parent_id);
        stringStringHashMap.put("name", dir);
        stringStringHashMap.put("space", deviceId);
        stringStringHashMap.put("kind", "drive#folder");
        String bodyExecute = okHttpUtils.execute(path, null, stringStringHashMap);
        XunLeiFile xunLeiCreatePath = new Gson().fromJson(bodyExecute, XunLeiFile.class);
        return xunLeiCreatePath.getFile();
    }
}
